
'''
Created on 19/11/2012

@author: rcasal
'''
# -*- coding: utf-8 -*-

T.force('es-es')

import json
import datetime
from domain.entities.consulta import Consulta
from domain.entities.comunicacion import Comunicacion, Condicion
from domain.entities.afiliado import Afiliado
from domain.entities.establecimiento import Establecimiento
from domain.entities.tipodocumento import TipoDocumento
from domain.entities.mail import Mail, MailBandejaEntrada, MailConsulta, MailRespuesta
from domain.forms.sqlforms import FormFactory
from domain.mailer.mailer import Mailer


if 0:
    None
    import gluon
    import gluon.languages.translator as T
    from gluon.html import A, DIV, TABLE, TR, TD, SELECT, OPTION, XML, URL, BUTTON
    global redirect; redirect = gluon.globals.redirect()
    global response; response = gluon.globals.Response()
    global request; request = gluon.globals.Request()
    global service; service = gluon.tools.Service()
    global crud; crud = gluon.tools.Crud()
    global local_import; local_import = gluon.compileapp.local_import_aux
    global session; session = gluon.globals.Session()
    from repositories.sigecon.comunicacion import ComunicacionRepository as comunicaciones
    from repositories.sigecon.comunicacion import ModalidadRepository as modalidades
    from repositories.sigecon.comunicacion import CondicionRepository as condiciones
    from repositories.sigecon.consulta import ConsultaRepository as consultas
    from repositories.sigecon.consulta import ConsultaHistoryRepository as consultas_archive
    from repositories.sigecon.usuario import SectorRepository as sectores
    from repositories.sigecon.usuario import AuthRepository as auth
    from repositories.sigecon.consulta import TipoConsultaRepository as tipos
    from repositories.sigecon.consulta import SubtipoConsultaRepository as subtipos
    from repositories.sigecon.consulta import RespuestaRepository as respuestas
    from repositories.sigecon.mails import BandejaEntradaRepository as bandeja_mails    
    from repositories.sigecon.mails import MailConsultaRepository as mails_consulta    
    from repositories.sigecon.mails import MailRespuestaRepository as mails_respuesta   

    from repositories.comunes.domicilio import LocalidadRepository as localidades
    from repositories.comunes.tipodocumento import TipoDocumentoRepository as tipos_doc
    from repositories.afiliaciones.afiliado import AfiliadoRepository as afiliados
    from repositories.afiliaciones.establecimiento import EstablecimientoCabeceraRepository as establecimientos

def obtener_historial():
    consulta = request.vars.consulta
    res = consultas_archive.findAllByIdConsulta(consulta, asdict = True)
    if len(res) == 0:
        div = DIV("No se encontraron modificaciones a la consulta buscada")
        return str(div)
    
    div = DIV()
    r = res[0]
    fecha = r.current_record.creado_en.strftime("%d/%m/%Y %H:%M")
    respuesta = r.current_record.respuesta.descripcion
    comentarios = r.current_record.comentarios
    usuario = r.current_record.usuario.username
    div.append(DIV(LABEL("Estado actual")))
    div.append(DIV(BR()))
    div.append(DIV(LABEL("Fecha: "), fecha))
    div.append(DIV(LABEL("Usuario: "), usuario))
    div.append(DIV(LABEL("Respuesta: "), respuesta))
    div.append(DIV(LABEL("Comentarios: "), comentarios))
    div.append(DIV(BR()))
    div.append(DIV(LABEL("Estados previos")))
    div.append(DIV(BR()))
    for r in res:
        fecha = r.creado_en.strftime("%d/%m/%Y %H:%M")
        respuesta = r.respuesta.descripcion
        comentarios = r.comentarios
        usuario = r.usuario.username
        div.append(DIV(LABEL("Fecha: "), fecha))
        div.append(DIV(LABEL("Usuario: "), usuario))
        div.append(DIV(LABEL("Respuesta: "), respuesta))
        div.append(DIV(LABEL("Comentarios: "), comentarios))
        div.append(DIV(LABEL("-----------------------------------------------------------------------------------")))
        
    return str(div)
    

def load(resultados):
    data_list = []
    rows = 0
    for resultado in resultados:
        consulta = resultado
        diccionario = dict(
                    fecha = consulta.comunicacion.creado_en.strftime("%d/%m/%Y %H:%M"),
                    numero = consulta.id,
                    nombre = consulta.comunicacion.nombre,
                    tipo = consulta.comunicacion.condicion.descripcion,
                    consulta = consulta.consulta.descripcion,
                    subconsulta = consulta.subconsulta.descripcion,
                    comentario = consulta.comentarios
        )
        data_list.append(diccionario)
        rows = rows + 1
        
    res = dict(data_list = data_list, rows = rows)
    return json.JSONEncoder().encode(res)

def load_consultas():
    field = request.vars.field
    value = request.vars.value
    res_comunicaciones = []
    resultados = []
    
    if field == "numero":
        c = consultas.findOne(value, asdict = True)
        if c:
            resultados.append(c)
    elif field == "nombre":
        res_comunicaciones = comunicaciones.findAllByNombre(value)
    elif field == "telefono":
        res_comunicaciones = comunicaciones.findAllByTelefono(value)
    elif field == "mail":
        res_comunicaciones = comunicaciones.findAllByMail(value)
        print value
        print res_comunicaciones
    elif field == "cuil":
        res_comunicaciones = comunicaciones.findAllByCuil(value)
    elif field == "cuit":
        res_comunicaciones = comunicaciones.findAllByCuit(value)

    for comunicacion in res_comunicaciones:
        res = consultas.findAllByIdComunicacion(comunicacion.ID, asdict = True)
        for r in res:
            resultados.append(r)
            
    jsondata = load(resultados)
    return jsondata
    

@auth.requires_login()
@auth.requires_membership(role="BUSQUEDA")
def find():    
    form = DIV(
              DIV(_id="markup", _style="width: 100%;"),
              DIV(_id = "grid")
              )

    return dict(title = T("Busqueda") + "s", form = form)





    
    
